#ifndef CyGameTextMgr_h
#define CyGameTextMgr_h

//
// Python wrapper class for CyGameTextMgr
//

class CvGameTextMgr;
class CyCity;
class CyUnit;
class CyDeal;
struct TradeData;
class CyGameTextMgr 
{
public:
	CyGameTextMgr();
	CyGameTextMgr(CvGameTextMgr* m_pGameTextMgr);			// Call from C++
	bool isNone() { return (m_pGameTextMgr==NULL); }

	void Reset();

	std::wstring getTimeStr(int iGameTurn, bool bSave);
	std::wstring getDateStr(int iGameTurn, bool bSave, int /*CalendarTypes*/ eCalendar, int iStartYear, int /*GameSpeedTypes*/ eSpeed);
	std::wstring getInterfaceTimeStr(int /*PlayerTypes*/ iPlayer);
	std::wstring getGoldStr(int /*PlayerTypes*/ iPlayer);
	std::wstring getResearchStr(int /*PlayerTypes*/ iPlayer);
	std::wstring getOOSSeeds(int /*PlayerTypes*/ iPlayer);
	std::wstring getNetStats(int /*PlayerTypes*/ iPlayer);
	std::wstring getTechHelp(int iTech, bool bCivilopediaText, bool bPlayerContext, bool bStrategyText, bool bTreeInfo, int iFromTech);
	std::wstring getUnitHelp(int iUnit, bool bCivilopediaText, bool bStrategyText, bool bTechChooserText, CyCity* pCity);
	std::wstring getSpecificUnitHelp(CyUnit* pUnit, bool bOneLine, bool bShort);
	std::wstring getBuildingHelp(int iBuilding, bool bCivilopediaText, bool bStrategyText, bool bTechChooserText, CyCity* pCity);
	std::wstring getProjectHelp(int iProject, bool bCivilopediaText, CyCity* pCity);
	std::wstring getPromotionHelp(int iPromotion, bool bCivilopediaText);
	std::wstring getBonusHelp(int iBonus, bool bCivilopediaText);
	std::wstring getReligionHelpCity(int iReligion, CyCity* pCity, bool bCityScreen, bool bForceReligion, bool bForceState, bool bNoStateReligion);
	std::wstring getImprovementHelp(int iImprovement, bool bCivilopediaText);
	std::wstring getTerrainHelp(int iTerrain, bool bCivilopediaText);
	std::wstring getFeatureHelp(int iFeature, bool bCivilopediaText);
	std::wstring parseCivicInfo(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);
	//EDIT BY MRGENIE START
	//EDIT BY MRGENIE START
	//EDIT BY MRGENIE START
	//EDIT BY MRGENIE START
	//EDIT BY MRGENIE START
	std::wstring parseCivicInfoTechPrereq(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoBuildingNotRequired(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumSpecialistInfos(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoGreatPeopleRateModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoGreatGeneralRateModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoDomesticGreatGeneralRateModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoStateReligionGreatPeopleRateModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoDistanceMaintenanceModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumCitiesMaintenanceModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoExtraHealth(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoFreeExperience(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoWorkerSpeedModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	// EDIT MRGENIE START - SPECIAL HANDLE FOR IMPROVEMENT UPGRADE RATE ARRAYS TO DEVIDE THEM IN SMALLER PORTIONS FOR THE CIVIC SCREEN
	std::wstring parseCivicInfoImprovementUpgradeRateModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoImprovementUpgradeRateModifierAppend_1(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoImprovementUpgradeRateModifierAppend_2(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	// EDIT MRGENIE END - SPECIAL HANDLE FOR IMPROVEMENT UPGRADE RATE ARRAYS TO DEVIDE THEM IN SMALLER PORTIONS FOR THE CIVIC SCREEN
	std::wstring parseCivicInfoMilitaryProductionModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoFreeUnitsPopulationPercent(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoBaseFreeMilitaryUnits(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoHappyPerMilitaryUnit(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoMilitaryFoodProduction(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoWorldSizeMaxConscript(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNoUnhealthyPopulation(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoBuildingOnlyHealthy(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoExpInBorderModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoWarWearinessModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoFreeSpecialist(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoTradeRoutes(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNoForeignTrade(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoCivicPercentAnger(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoStateReligion(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoStateReligionHappiness(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNonStateReligionHappiness(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoStateReligionUnitProductionModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoStateReligionBuildingProductionModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNoStateReligionBuildingProductionModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNoStateReligionBuildingProductionModifierAppend(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoStateReligionFreeExperience(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNoNonStateReligionSpread(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoCityGuardModifier(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNoTechLeak(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoYieldChangeHelpAllCities(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoYieldChangeHelpCapital(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoYieldChangeHelpTradeRoutes(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoCommerceChangeHelpAllCities(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoCommerceChangeHelpCapital(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoCommerceChangeHelpSpecialist(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoLargestCityHappiness(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	// EDIT MRGENIE START - SPECIAL HANDLE FOR YIELD ARRAYS TO DEVIDE THEM IN SMALLER PORTIONS FOR THE CIVIC SCREEN
	std::wstring parseCivicInfoNumImprovementInfosYield1Row1(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumImprovementInfosYield1Row2(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumImprovementInfosYield2Row1(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumImprovementInfosYield2Row2(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumImprovementInfosYield3Row1(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumImprovementInfosYield3Row2(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	// EDIT MRGENIE END - SPECIAL HANDLE FOR YIELD ARRAYS TO DEVIDE THEM IN SMALLER PORTIONS FOR THE CIVIC SCREEN
	std::wstring parseCivicInfoInquisition(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoInquisitionAppend1(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoInquisitionAppend2(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoInquisitionAppend3(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie	
	std::wstring parseCivicInfoBuildingCivicPrereq(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoBuildingCivicPrereqAppend1(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoBuildingCivicPrereqAppend2(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoBuildingCivicPrereqAppend3(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	// EDIT MRGENIE START - SPECIAL HANDLE FOR BUILDING HAPPINESS TO DEVIDE THEM IN SMALLER PORTIONS FOR THE CIVIC SCREEN
	std::wstring parseCivicInfoNumBuildingInfos(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumBuildingInfosAppend_1(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumBuildingInfosAppend_2(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumBuildingInfosAppend_3(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumBuildingInfosAppend_4(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoNumBuildingInfosAppend_5(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	// EDIT MRGENIE END - SPECIAL HANDLE FOR BUILDING HAPPINESS TO DEVIDE THEM IN SMALLER PORTIONS FOR THE CIVIC SCREEN
	std::wstring parseCivicInfoNumFeatureInfos(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicNumHurryInfos(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoGoldPerUnit(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	std::wstring parseCivicInfoGoldPerMilitaryUnit(int /*CivicTypes*/ iCivicType, bool bCivilopediaText, bool bPlayerContext, bool bSkipName);     //edit by mrgenie
	//EDIT BY MRGENIE END
	//EDIT BY MRGENIE END
	//EDIT BY MRGENIE END
	//EDIT BY MRGENIE END
	//EDIT BY MRGENIE END
	std::wstring parseReligionInfo(int /*ReligionTypes*/ iReligionType, bool bCivilopediaText);
	std::wstring parseCivInfos(int /*CivilizationTypes*/ iCivilization, bool bDawnOfMan);
	std::wstring parseLeaderTraits(int /*LeaderHeadTypes*/ iLeader, int /*CivilizationTypes*/ iCivilization, bool bDawnOfMan, bool bCivilopediaText);
	std::wstring getTradeString(TradeData* pTradeData, int iPlayer1, int iPlayer2);
	std::wstring getSpecialistHelp(int iSpecialist, bool bCivilopediaText);
	std::wstring buildHintsList();
	std::wstring getAttitudeString(int iPlayer, int iTargetPlayer);
	std::wstring setConvertHelp(int iPlayer, int iReligion);
	std::wstring setRevolutionHelp(int iPlayer);
	std::wstring setVassalRevoltHelp(int iMaster, int iVassal);
	std::wstring getActiveDealsString(int iThisPlayer, int iOtherPlayer);
	std::wstring getDealString(CyDeal* pDeal, int iPlayerPerspective);


protected:
	CvGameTextMgr* m_pGameTextMgr;
};

#endif	// #ifndef CyGameTextMgr_h
